package com.gdpu.project.service;

import java.util.List;
import java.util.Map;

import com.gdpu.page.vo.QueryResult;
import com.gdpu.project.vo.ProApply;
import com.gdpu.project.vo.ProApproval;
import com.gdpu.project.vo.ProEnd;
import com.gdpu.project.vo.ProMonitor;
import com.gdpu.project.vo.Project;
import com.gdpu.project.vo.Teacher;

public interface ProjectService {
	/**
	 * 新增Project
	 * 
	 * @param project
	 *            项目实体
	 * @return
	 */
	public abstract Boolean addProject(Project project);

	/**
	 * 更新Project
	 * 
	 * @param project
	 *            项目实体
	 * @return
	 */
	public abstract Boolean updateProject(Project project);

	/**
	 * 通过projectId删除Project
	 * 
	 * @param projectId
	 *            项目编号
	 * @return
	 */
	public abstract Boolean deleteProjectByProjectId(int Id);

	/**
	 * 通过projectId查找Project
	 * 
	 * @param projectId
	 * 				项目编号
	 * @return
	 */
	public abstract Project findProjectById(int projectId);

	/**
	 * 查找所有的project
	 * 
	 * @return List<Project>
	 */
	public abstract List<Project> findAllProject();

	/**
	 * 通过projectType查找所有的projec
	 * 
	 * @param projectType
	 *  			项目类型
	 * @return
	 */
	public abstract QueryResult<Project> findProjectByType(String projectType,int firstindex,int maxresult);
	public QueryResult<Project> findByTeacherId(String teacherId,int firstindex,int maxresult);
	
	//项目申请Service
	public abstract Boolean addProApply(ProApply proapply);
	public abstract Boolean deleteProApply(ProApply proapply);
	public abstract Boolean updateProApply(ProApply proapply);
	public abstract List<ProApply> findAllProApply();
	public abstract Map<ProApply, Teacher> findProApply(String projectId);
	public abstract List<ProApply> findAllProApplyByTeacherId(String teacherId);
	public abstract List<ProApply> findAllProApplyByProjectId(String projectId);
	
	//项目立项Service
	public abstract Boolean addProApproval(ProApproval proApproval);
	public abstract Boolean deleteProApproval(ProApproval proApproval);
	public abstract Boolean updateProApproval(ProApproval proApproval);
	public abstract List<ProApproval> findAllProApproval();
	public abstract Map<ProApproval, Teacher> findProApproval(String projectId);
	public abstract List<ProApproval> findAllProApprovalByTeacherId(String teacherId);
	public abstract List<ProApproval> findAllProApprovalByProjectId(String projectId);
	
	//项目监控Service
	public abstract Boolean addProMonitor(ProMonitor proMonitor);
	public abstract Boolean deleteProMonitor(ProMonitor proMonitor);
	public abstract Boolean updateProApproval(ProMonitor proMonitor);
	public abstract List<ProMonitor> findAllProMonitor();
	public abstract Map<ProMonitor, Teacher> findProMonitor(String projectId);
	public abstract List<ProMonitor> findAllProMonitorByTeacherId(String teacherId);
	public abstract List<ProMonitor> findAllProMonitorlByProjectId(String projectId);
	
	//项目监控Service
	public abstract Boolean addProEnd(ProEnd proEnd);
	public abstract Boolean deleteProEnd(ProEnd proEnd);
	public abstract Boolean updateProEnd(ProEnd proEnd);
	public abstract List<ProEnd> findAllProEnd();
	public abstract Map<ProEnd, Teacher> findProEnd(String projectId);
	public abstract List<ProEnd> findAllProEndByTeacherId(String teacherId);
	public abstract List<ProEnd> findAllProEndByProjectId(String projectId);


}